package com.nd.android.u.filestoragesystem.externalInterface;

import java.io.Serializable;

import org.json.JSONObject;


/**
 * 文件信息定义
 * 
 * <br>Created 2014-6-27 下午2:41:46
 * @version  
 * @author   huangszh		
 *
 * @see
 */
public interface IFile extends Serializable{
    
    /**
     * 获取文件id
     * 
     * <br>Created 2014-6-27 下午2:41:58
     * @return  long
     * @author        :  huangszh
     */
	long getFid();

	/**
	 * 设置文件id
	 * 
	 * <br>Created 2014-6-27 下午2:42:06
	 * @param fid  文件id
	 * @author        :  huangszh
	 */
	void setFid(long fid);

	/**
	 * 获取文件夹id
	 * 
	 * <br>Created 2014-6-27 下午2:43:13
	 * @return long
	 * @author        :  huangszh
	 */
	long getFolderid();

	/**
	 * 设置文件夹id
	 * 
	 * <br>Created 2014-6-27 下午2:43:16
	 * @param folderid 文件夹id
	 * @author        :  huangszh
	 */
	void setFolderid(long folderid);

	/**
	 * 获取云id
	 * 
	 * <br>Created 2014-6-27 下午2:43:19
	 * @return String  
	 * @author        :  huangszh
	 */
	String getCloudid();

	/**
	 * 设置云id
	 * 
	 * <br>Created 2014-6-27 下午2:43:22
	 * @param cloudid  云id
	 * @author        :  huangszh
	 */
	void setCloudid(String cloudid);

	/**
	 * 获取类型：0=个人、1=组织、2=群 3=资源
	 * 
	 * <br>Created 2014-6-27 下午2:43:25
	 * @return int
	 * @author        :  huangszh
	 */
	int getType();

	/**
	 * 设置类型：0=个人、1=组织、2=群 3=资源
	 * 
	 * <br>Created 2014-6-27 下午2:43:27
	 * @param type 类型
	 * @author        :  huangszh
	 */
	void setType(int type);

	/**
	 * 获取id ：用户uid（type=0时）/组织id（type=1时）/群id（type=2时）/资源分类id（type=3时）
	 * 
	 * <br>Created 2014-6-27 下午2:43:31
	 * @return long
	 * @author        :  huangszh
	 */
	long getId();

	/**
	 * 设置id
	 * 
	 * <br>Created 2014-6-27 下午2:43:34
	 * @param id   用户uid（type=0时）/组织id（type=1时）/群id（type=2时）/资源分类id（type=3时）
	 * @author        :  huangszh
	 */
	void setId(long id);

	/**
	 * 获取应用id
	 * 
	 * <br>Created 2014-6-27 下午2:43:36
	 * @return int
	 * @author        :  huangszh
	 */
	int getAppid();

	/**
	 * 设置应用id
	 * 
	 * <br>Created 2014-6-27 下午2:43:39
	 * @param appid  应用id
	 * @author        :  huangszh
	 */
	void setAppid(int appid);

	/**
	 * 获取文件路径
	 * 
	 * <br>Created 2014-6-27 下午2:43:42
	 * @return String
	 * @author        :  huangszh
	 */
	String getPath();

	/**
	 * 设置文件路径
	 * 
	 * <br>Created 2014-6-27 下午2:43:45
	 * @param path 文件路径
	 * @author        :  huangszh
	 */
	void setPath(String path);

	/**
	 * 获取文件md5
	 * 
	 * <br>Created 2014-6-27 下午2:44:23
	 * @return String
	 * @author        :  huangszh
	 */
	String getMd5();

	/**
	 * 设置文件md5
	 * 
	 * <br>Created 2014-6-27 下午2:44:26
	 * @param md5  文件md5
	 * @author        :  huangszh
	 */
	void setMd5(String md5);

	/**
	 * 获取文件MIME
	 * 
	 * <br>Created 2014-6-27 下午2:44:29
	 * @return String
	 * @author        :  huangszh
	 */
	String getMime();

	/**
	 * 设置文件MIME
	 * 
	 * <br>Created 2014-6-27 下午2:44:32
	 * @param mime 文件MIME
	 * @author        :  huangszh
	 */
	void setMime(String mime);

	/**
	 * 获取文件分类
	 * 
	 * <br>Created 2014-6-27 下午2:44:35
	 * @return String
	 * @author        :  huangszh
	 */
	String getSort();

	/**
	 * 设置文件分类
	 * 
	 * <br>Created 2014-6-27 下午2:44:37
	 * @param sort 文件分类
	 * @author        :  huangszh
	 */
	void setSort(String sort);

	/**
	 * 获取文件扩展名
	 * 
	 * <br>Created 2014-6-27 下午2:44:40
	 * @return String
	 * @author        :  huangszh
	 */
	String getExt();

	/**
	 * 设置文件扩展名
	 * 
	 * <br>Created 2014-6-27 下午2:44:43
	 * @param ext  文件扩展名
	 * @author        :  huangszh
	 */
	void setExt(String ext);

	/**
	 * 获取文件大小（byte）
	 * 
	 * <br>Created 2014-6-27 下午2:44:45
	 * @return long
	 * @author        :  huangszh
	 */
	long getSize();

	/**
	 * 设置文件大小
	 * 
	 * <br>Created 2014-6-27 下午2:44:48
	 * @param size     文件大小
	 * @author        :  huangszh
	 */
	void setSize(long size);

	/**
	 * 获取宽度
	 * 
	 * <br>Created 2014-6-27 下午2:46:07
	 * @return int
	 * @author        :  huangszh
	 */
	int getWidth();

	/**
	 * 设置宽度
	 * 
	 * <br>Created 2014-6-27 下午2:46:10
	 * @param width    宽度
	 * @author        :  huangszh
	 */
	void setWidth(int width);

	/**
	 * 获取高度
	 * 
	 * <br>Created 2014-6-27 下午2:46:13
	 * @return int
	 * @author        :  huangszh
	 */
	int getHeight();

	/**
	 * 设置高度
	 * 
	 * <br>Created 2014-6-27 下午2:46:16
	 * @param height   高度
	 * @author        :  huangszh
	 */
	void setHeight(int height);

	/**
	 * 获取文件名
	 * 
	 * <br>Created 2014-6-27 下午2:46:19
	 * @return String
	 * @author        :  huangszh
	 */
	String getName();

	/**
	 * 设置文件名
	 * 
	 * <br>Created 2014-6-27 下午2:46:22
	 * @param name     文件名
	 * @author        :  huangszh
	 */
	void setName(String name);

	/**
	 * 获取相关信息{
                    "intro":"文件描述/简介", 
                    "keys":"关键字", 
                    "year":"年", 
                    "month":"月",
                    "day":"日",
                    "performer":"主演"
                   }
	 * 
	 * <br>Created 2014-6-19 下午9:14:46
	 * @return JSONObject
	 * @author        :  huangszh
	 */
	JSONObject getInfo();

	/**
	 * 设置文件信息
	 * 
	 * <br>Created 2014-6-27 下午2:46:25
	 * @param info 文件信息
	 * @author        :  huangszh
	 */
	void setInfo(JSONObject info);

	/**
	 * 获取点击数
	 * 
	 * <br>Created 2014-6-27 下午2:46:28
	 * @return int
	 * @author        :  huangszh
	 */
	int getHits();

	/**
	 * 设置点击数
	 * 
	 * <br>Created 2014-6-27 下午2:46:31
	 * @param hits 点击数
	 * @author        :  huangszh
	 */
	void setHits(int hits);

	/**
	 * 获取创建时间（精确到毫秒）
	 * 
	 * <br>Created 2014-6-27 下午2:46:35
	 * @return long
	 * @author        :  huangszh
	 */
	long getTime();

	/**
	 * 设置创建时间
	 * 
	 * <br>Created 2014-6-27 下午2:46:38
	 * @param time 创建时间（精确到毫秒）
	 * @author        :  huangszh
	 */
	void setTime(long time);

	/**
	 * 获取ip
	 * 
	 * <br>Created 2014-6-27 下午2:46:41
	 * @return String
	 * @author        :  huangszh
	 */
	String getIp();

	/**
	 * 设置ip
	 * 
	 * <br>Created 2014-6-27 下午2:46:44
	 * @param ip  ip
	 * @author        :  huangszh
	 */
	void setIp(String ip);

	/**
	 * 获取文件上传地点
	 * 
	 * <br>Created 2014-6-27 下午2:46:48
	 * @return String
	 * @author        :  huangszh
	 */
	String getLocal();

	/**
	 * 设置文件上传地点
	 * 
	 * <br>Created 2014-6-27 下午2:46:51
	 * @param local    上传地点
	 * @author        :  huangszh
	 */
	void setLocal(String local);

	/**
	 * 获取文件合并标记
	 * 
	 * <br>Created 2014-6-27 下午2:46:54
	 * @return int @see MergeFlag
	 * @author        :  huangszh
	 */
	int getFlag();

	/**
	 * 设置文件合并标记
	 * 
	 * <br>Created 2014-6-27 下午2:46:57
	 * @param flag 文件合并标记 @see MergeFlag
	 * @author        :  huangszh
	 */
	void setFlag(int flag);
	
	/**
	 * 设置互动信息
	 * 
	 * <br>Created 2014-7-2 上午10:49:28
	 * @param attr 互动信息
	 * @author        :  huangszh
	 */
	void setInterActionAttr(IInterActionAttr attr);
	
	/**
	 * 获取互动信息
	 * 
	 * <br>Created 2014-7-2 上午10:49:21
	 * @return IInterActionAttr
	 * @author        :  huangszh
	 */
	IInterActionAttr getInterActionAttr();

}
